package com.ruben;

import com.ruben.utils.AjaxJson;
import com.ruben.utils.StringUtil;
import com.ruben.utils.TimeUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @ClassName: CallableDemo
 * @Description:
 * @Date: 2020/8/10 19:28
 * *
 * @author: achao<achao1441470436 @ gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
public class CallableDemo {
    public static void main(String[] args) throws ExecutionException,
            InterruptedException {
        function1();
        function2();
    }

    public static void function2() throws ExecutionException, InterruptedException {
        String bigStr = "百度首页卡梅隆的猪消息商城设置网页 新闻 贴吧 知道 音乐 图片 视频 地图 文库 百科\n" +
                "  \n" +
                "程序员\n" +
                "进入词条全站搜索帮助\n" +
                "声明：百科词条人人可编辑，词条创建和修改均免费，绝不存在官方及代理商付费代编，请勿上当受骗。详情>>\n" +
                "首页\n" +
                "历史上的今天\n" +
                "百科冷知识\n" +
                "图解百科\n" +
                "分类\n" +
                "艺术科学自然文化地理生活社会人物经济体育历史\n" +
                "秒懂百科\n" +
                "懂啦\n" +
                "秒懂本尊答\n" +
                "秒懂大师说\n" +
                "秒懂看瓦特\n" +
                "秒懂五千年\n" +
                "秒懂全视界\n" +
                "特色百科\n" +
                "数字博物馆\n" +
                "非遗百科\n" +
                "城市百科\n" +
                "恐龙百科\n" +
                "多肉百科\n" +
                "用户\n" +
                "蝌蚪团\n" +
                "百科校园\n" +
                "分类达人\n" +
                "百科任务\n" +
                "百科商城\n" +
                "权威合作\n" +
                "合作模式\n" +
                "常见问题\n" +
                "联系方式\n" +
                "个人中心\n" +
                "相关视频|推荐视频\n" +
                "如何突破程序员的职业天花板？\n" +
                "17.6万播放\n" +
                "程序员需要什么样的水平？\n" +
                "1.2万播放\n" +
                "程序员锁死服务器，职业道德都去哪了？\n" +
                "4.6万播放\n" +
                "拒收中国员工，还禁止部分员工移居中国！这一美企却自称“人道”\n" +
                "3.2万播放\n" +
                "程序员不是“青春饭”正确思维帮你解决职业生涯“bug”\n" +
                "1.4万播放\n" +
                "阿里食堂太会玩！“1024程序员套餐”：大麦饭、霸王不卡机\n" +
                "7773播放\n" +
                "拿1300工资，不够妻子一星期开支，程序员老公：被逼出的老板\n" +
                "5514播放\n" +
                "为什么很多公司一般不要培训机构出来的程序员？今天可算明白了\n" +
                "5397播放\n" +
                "美军遇到麻烦！只有三分之一F-35能参加战争，印度程序员干的\n" +
                "5390播放\n" +
                "程序员的这份征婚贴，网友们看后吵翻了\n" +
                "5336播放\n" +
                "程序员是一个多义词，请在下列义项上选择浏览（共2个义项） 添加义项 \n" +
                "▪职业▪中国社会科学院文献信息中心主办的杂志\n" +
                "收藏3520\n" +
                "247\n" +
                "程序员 （职业） 讨论99+ 上传视频\n" +
                "程序员（英文Programmer）是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员，但两者的界限并不非常清楚。软件从业人员分为初级程序员、中级程序员、高级程序员（现为软件设计师）、系统分析员，系统架构师，测试工程师六大类。\n" +
                "码农都是单身吗？\n" +
                "中文名程序员外文名Programmer拼    音chéng xù yuán职    责程序的设计、开发、维护分    类设计人员、编码人员\n" +
                "目录\n" +
                "1 岗位职责\n" +
                "2 职业认证\n" +
                "▪ 考试介绍\n" +
                "▪ 考试目标\n" +
                "▪ 报考条件\n" +
                "▪ 考试要求\n" +
                "▪ 相关书籍\n" +
                "3 岗位分类\n" +
                "4 行业现状\n" +
                "5 职业要求\n" +
                "6 必备技能\n" +
                "7 素质要求\n" +
                "8 职业困境\n" +
                "9 薪资待遇\n" +
                "10 日常工作\n" +
                "岗位职责\n" +
                "1、对项目经理负责，负责软件项目的详细设计、编码和内部测试的组织实施，对小型软件项目兼任系统分析工作，完成分配项目的实施和技术支持工作。\n" +
                "2、协助项目经理和相关人员同客户进行沟通，保持良好的客户关系。\n" +
                "3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。\n" +
                "4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。\n" +
                "5、负责向项目经理及时反馈软件开发中的情况，并根据实际情况提出改进建议。\n" +
                "6、参与软件开发和维护过程中重大技术问题的解决，参与软件首次安装调试、数据割接、用户培训和项目推广。\n" +
                "7、负责相关技术文档的拟订。\n" +
                "8、负责对业务领域内的技术发展动态进行分析研究。\n" +
                "职业认证\n" +
                "考试介绍\n" +
                "软考程序员考试属于计算机软件水平考试（简称软考）中的一个初级计算机职称考试。对于软考程序员考试并无学历及资历条件限制，更无论年龄、专业与资历。一年可报考软考程序员考试两次，但一次考试只能报考一种资格，因此报考了程序员考试则无法再报考软考其他级别或科目的考试。同时软考程序员考试采用笔试形式，考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试方式。\n" +
                "通过国家统一组织的考试，资格考试分为：程序员级（原初级程序员）、软件设计师（原高级程序员）以及更高水准的：信息系统项目管理师、系统分析师（原系统分析员）、系统架构设计师、网络规划设计师、系统规划与管理师。\n" +
                "考试目标\n" +
                "通过本考试的合格人员能根据软件开发项目管理和软件工程的要求，按照程序设计规格说明书编制并调试程序，写出程序的相应文档，产生符合标准规范的、实现设计要求的、能正确可靠运行的程序；具有助理工程师（或技术员）的实际工作能力和业务水平。\n" +
                "1、CVEQC认证持有者已经通过了中国职业教育资格认证指导中心组织的培训和相应的考试，具有相应的专业技能和知识。\n" +
                "2、CVEQC证书可作为劳动者岗前培训、在职培训、提高培训、继续教育的培训认证；也是劳动者“先培训、后就业，先培训、后上岗”的凭证。\n" +
                "3、CVEQC证书是中国职业教育资格认证指导中心颁发的专业技能证书。标有证书序列号、证书编号、培训者及证书持有者身份证号码，并盖有全国职业教育管理委员会、中国职业教育资格认证指导中心的证书专用章。\n" +
                "4、 证书证明参加培训及证书持有者具有系统地接受岗位技能培训的经历，证书在全国范围内有效。\n" +
                "报考条件\n" +
                "凡遵守中华人民共和国宪法和各项法律，恪守职业道德，具有一定计算机技术应用能力的人员，均可根据本人情况报名参加相应专业类别、级别的考试。\n" +
                "考试要求\n" +
                "（1）掌握数据及其转换、数据的机内表示、算术和逻辑运算，以及相关的应用数学基础知识；\n" +
                "（2）理解计算机的组成以及各主要部件的性能指标；\n" +
                "（3）掌握操作系统、程序设计语言的基础知识；\n" +
                "（4）熟练掌握计算机常用办公软件的基本操作方法；\n" +
                "（5）熟练掌握基本数据结构和常用算法；\n" +
                "（6）熟练掌握C程序设计语言，以及C++、Java、Visual Basic中的一种程序设计语言；\n" +
                "（7）熟悉数据库、网络和多媒体的基础知识；\n" +
                "（8）掌握软件工程的基础知识，了解软件过程基本知识、软件开发项目管理的常识；\n" +
                "（9）了解常用信息技术标准、安全性，以及有关法律、法规的基本知识；\n" +
                "（10）了解信息化、计算机应用的基础知识；\n" +
                "（11）正确阅读和理解计算机领域的简单英文资料。\n" +
                "相关书籍\n" +
                "很多程序员响应，他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单，不过都是推荐数 Top 9的书。\n" +
                "其实除了前9本之外，推荐数前30左右的书籍都算经典，笔者整理编译这个问答贴，同时摘译部分推荐人的评语。\n" +
                "下面就按照各本书的推荐数排列。\n" +
                "1、《代码大全》 史蒂夫·迈克康奈尔\n" +
                "2、《程序员修炼之道》\n" +
                "3、《计算机程序的构造和解释》\n" +
                "4、《算法导论》\n" +
                "5、《重构：改善既有代码的设计》\n" +
                "6、《设计模式》\n" +
                "7、《人月神话》\n" +
                "8、《计算机程序设计艺术》\n" +
                "9、《编译原理》（龙书）\n" +
                "岗位分类\n" +
                "世界上第一位程序员是英国著名诗人乔治·戈登·拜伦的女儿AdaLovelace，曾设计了巴贝奇分析机上解伯努利方程的一个程序。她甚至还建立了循环和子程序的概念。由于其在程序设计上的开创性工作，AdaLovelace被称为世界上第一位程序员。美国国防部开发的ADA语言就是为纪念这位世界上的第一位程序员而命名的。\n" +
                "计算机科学发展到今天（21世纪初期），程序员从事的人群很多，分工也不相同，从大的方面可以分为以下几类：asp程序员、web前端开发程序员、delphi程序员、php程序员、powerbuilder程序员、C程序员、linux程序员、net程序员、vb程序员、java程序员、javascript程序员、C++程序员、Python程序员、Ruby程序员、ABAP程序员、android程序员、iOS程序员。\n" +
                "行业现状\n" +
                "由CSDN、《程序员》主办的2007年开发者大调查2007年底已收到15000多份有效问卷，已经是中国调查样本最多的开发者调查。在这次调查中，详细的分析了样本空间的分布状况，发\n" +
                "程序员\n" +
                "程序员\n" +
                "现在庞大数目的有效问卷的参与者中有70%也就是接近一万一千名的参与调查者是IT的全职人员，14%的参与者是有过开发工作经验的学生，从这样的分布就可以看出来IT从业人员对专业知识的需求是巨大而迫切的，CSDN作为专业的软件开发技术门户网站，已经是大家获取这些技术知识的主要手段。\n" +
                "一、选择数据库技术和互联网技术的人数总和占到了总人数的一半\n" +
                "2007年火热的SOA和动态语言各占13%和12%。其实这几大块技术分布他们之间都是有一定的联系的，互联网的发展近两年呈爆炸式的增长态势，中国的网民总数已经超过了1.4亿这样一个巨大的数字。\n" +
                "企业中业务的复杂程度越来越高，商业竞争不断增加企业的IT系统，使企业的商业数据呈几何数量级不断增长，在后台海量的数据中数据的管理由之前的单一型数据变\n" +
                "程序员\n" +
                "程序员\n" +
                "成了多纬度的复杂数据，所以可以同时管理关系型数据库和XML数据的混合型数据库已经成为主流。\n" +
                "面对企业不断增加新的IT信息系统，整合已经迫在眉睫，SOA成为必然的趋势，企业对人才的需求从单一型技术人才、业务人才跳跃到了业务技术的复合型人才，这次的开发人员大调查令《程序员》杂志的调查者看到了这些技术焦点背后千丝万缕的关联。\n" +
                "二、几乎一半的.NET用户不参与开源项目RedHat+Ubuntu占有率超过70%\n" +
                "应用到.NET平台上的开源项目，“大量使用”的比例数仅为8.68%，尚不足一成；“少量应用”的开发者人数比例为42.78%。\n" +
                "程序员\n" +
                "程序员\n" +
                "“基本不用”的比例高达48.54%，与前二者之和几乎不相上下。\n" +
                "虽然开源的出现和发展，让软件没有垄断的未来日渐明朗；虽然开源运动经过多年的高速发展，现在已经聚集了相当的力量，开源的自由和给予理念逐渐深入到了企业的技术核心层面。但微软以商业软件为生，毕竟在微软技术领域中，开源项目通常都被看作是二等公民。很多开源项目对.NET社区产生了巨大的推动作用，微软公司很难提供任何实质性质的支持。\n" +
                "Linux版本\n" +
                "当前安装有Linux操作系统，数据中RedHatFedora占据绝对优势——Linux使用者使用该版本占总数的49.49%。Fedora是RedHat推出的重要的一款Linux版本，在每个fedora版本中都是集成最新的Linux软件，特别是服务端软件。\n" +
                "使用“RedHatFedora”关键词在百度网页中搜索得到7,090,000条结果，RedHatFedora在调查中占据Linux版本的半壁江山符合整个Linux版本的分布情况。\n" +
                "排在第二位的是Ubuntu，受支持数占到总数的23.92%；第三位的是SuSE占9.09%，接下来是Debian，使用率为5.92%。在这里面令人期待的中国本土Linux的让人大失所望。使用率仅占5.16%，几乎只\n" +
                "程序员\n" +
                "程序员\n" +
                "有RedHatFedora的十分之一。\n" +
                "三、揭示八成技术人员数据库选型标准SQLServer用户接近50%\n" +
                "使用率占据榜首的数据库产品是微软的SQLServer，比例数达到了47.92%。与其余所有的数据库之和分庭抗衡，大有一览众山小之势。\n" +
                "从调查得到的使用率来看，MySQL仍处于对MSSQLServer望尘莫及的阶段。调查显示，MySQL的使用数为1651，占总数的13.80%，不过排名第三。\n" +
                "使用率排在第二位的是Oracle，比例达到24.21%。在前有SQLServer，后有MySQL的情况下，Oracle仍能达到四分之一的占有率，发展势头不可谓不强劲。\n" +
                "虽然Orcale数据库的价格比SQLServer数据库要高，但Oracle采用开放的策略目标，可在所有主流平台上运行。而且有开发者认为Oracle的安全认证是获得最高认证级别的ISO标准认证，因此安全性高于SQLServer。\n" +
                "排在第四位的是Access——5.59%；接着是DB2UDB，占总数的2.75%；至于FoxPro、Informix、PostgreSQL、Sybase得票数均仅在一百左右，还有待进一步的发展。\n" +
                "四、中国程序员最爱的智能手机平台Linux+Java超过Symbian\n" +
                "“开源Linux对于众多开发者的吸引力是巨大的，但是，这仅仅是针对于技术开发人员来说的，而对于普通消费者就不是如此了。”在众多开发者心中，主要是对Linux的青睐。从调查结果中也可以直接反应这样的现象。有专家对此评论说：Linux+Java的模式,应该是应用最多的模式。\n" +
                "程序员\n" +
                "程序员\n" +
                "针对此问题行业的专家有自己的观点：“现在Wince和Symbian发展很快，并且随着手机硬件方面性能的提高，很多政府部门和企业在采购时，很多会考虑Dopod这样的手机，或者价格便Wince和Symbian都主要使用c++开发，正是嵌入式开发的潮流。”\n" +
                "不同人群对于收集智能操作系统的观点是不同的，对于开发者角度，他们更加青睐于微软和开源Linux的产品，而普通大众他们比较喜欢Wince和Symbian。\n" +
                "五、七成程序员不愿意选择门户网站获取开源信息，而更关注SourceForge等\n" +
                "30%的技术人员从门户网站获取开源技术信息，剩下的70%的技术人员都是从专业的开源社区和开源厂商的技术网站上获取信息，包括有SourceForge、LinuxToday、OpenOffice和IBMdW等。\n" +
                "在这70%当中，比例占有绝对优势的就是SourceForge了，这里是开源软件的开发者进行开发管理的集中式场所，也是全球最大开源软件开发平台和仓库。而LinuxToday里面会有记录很多很新的Linux业界大事，新闻以及出版信息。所以，对开源技术感兴趣的程序员们，不必再为如何获取开源信息而苦恼了，快加入到这70%的人群中来吧。\n" +
                "互联网的发展已经成为大家获取信息最主要的渠道之一，网民上网的习惯也从开始的上为数不多的几个门户网站发生了变化，大而全的门户网站并不能满足专业领域人员的信息需求，从2004年开始陆续出现了大量的各个领域垂直细分的内容网站，一方面有长尾理论的理论支持，另一方面厂商也建立了相应产品的技术内容网站，希望能聚集一批专注于这个领域专业人士，做好他们的定向营销。\n" +
                "做细分领域内容的网站对门户已经造成了一定的威胁，这些网站的专业性高，用户的粘性相对也比较高，如果细分领域的内容网站能将自己的服务有所提升，就如同SourceForge一样，那么未来门户网站的路就变得更加崎岖了。\n" +
                "六、Java开发框架：6%的JSF欲撼动21%的Struts\n" +
                "程序员\n" +
                "程序员\n" +
                "JSF现在比较有优势的是对Ajax的集成，这一点走在了其他框架的前面。未来两年，JSF与Struts将展开JavaWeb框架的最终战争。 经过数年的“框架大战”，Java界的各种框架找到了自己应有的位置。Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中，Spring+Hibernate的地位应该说短期内是难以撼动了。除了新兴的JbossSeam作为挑战者之外，几乎难有劲敌。\n" +
                "JavaB/S编程中历来战火最激烈的其实还在Web层，框架的数量最多，争议最大。一切由Struts而起，而Struts最终也坐稳了第一个时代的王座。在技术层面，Struts1.x已经被无数人抱怨过、批评过，但终于还是稳坐王位，这充分说明了习惯的力量。“稳定压倒一切”，这句话在IT技术领域仍旧适用。\n" +
                "详细的分析了Java开发框架的使用状况，发现主要使用的开发框架JSP占26%，Struts占21%，Hibernate占17%，SpringMVC占11%，EJB占7%，JSF占6%，SpringWebFlow和POJO各占4%，其它占4%。就这一调查数据，不难看出，Spring+Hibernate+Struts的优势地位还是相当的明显。\n" +
                "Struts和Hibernate几乎已经成了JavaEE应用的常规配置，21%的开发者用到Struts，用到Hibernate的开发者也有17%；在一个成熟的技术平台上，各个项目的技术方案会在很大程度上趋同——因为所有未知领域都已经被探明，各种问题都有对应的最佳实践，架构师们可以参考的成功案例越来越多。就拿JavaEE来说，架构师们需要考虑的问题比之三年前已经简单多了，这就是成熟的价值。\n" +
                "有专家评论：“其实IT应用技术，什么新鲜玩意并不难学，难的是标准化和规范化。\n" +
                "程序员\n" +
                "程序员\n" +
                "每个程序员都有自己的思路和习惯，写出来的代码自然是五花八门。Java何以成为编程界的占重要地位，很重要的一点在于Java的规范化。这种规范化很高的语言适用于多人合作的大型项目，便于沟通和理解，也就便于集成和维护。 Java世界为什么会框架横飞，说到底还是规范化的需要。纯JSP和Struts写Web谁快，摆明了是JSP。那为什么用Struts？原因在于100个人写出来的JSP，有100种写法；而100个人写出来的Struts，基本相似。Struts之成功，正缘于其在JavaWeb层的规范化方面所做出的贡献。\n" +
                "然而长江后浪推前浪，Struts1.x的技术缺陷毕竟是隐患。Sun力推JSF，打算一雪Web层框架缺失之耻。未来两年，JSF与Struts将展开JavaWeb框架的最终战争。\n" +
                "JSP经过几年风雨洗礼依然把持头把交椅，看来所有的框架表示层都离不开JSP而存在，而作为JSP的手足兄弟JSF也是仅次Spring之后又一个后起之秀。\n" +
                "如今JbossSeam在2009年之后就退出了历史舞台，JSF在国内使用者也寥寥无几了，而大红大紫的SSH框架也被Spring+SpringMVC+Mybaties主流所代替了。\n" +
                "七、C++开发环境格局难打破75%的开发人员首选VS系列\n" +
                "1998年Borland公司推出的C++Builder这一当年全新的32位Windows开发工\n" +
                "程序员\n" +
                "程序员\n" +
                "具，继承了Delphi使用简便、功能强大、效率高的特点，并且结合了C++语言几乎所有优点。所以开始C++Builder迅速风靡。 它的主要竞争对象——Microsoft开发的VisualC++也是不甘示弱，迅速出击，突出了Visual可视化强的特点，加上Platform、SDK部分以及Microsoft产品与Windows的天然默契，逐渐成为了技术人员的首选。随着VisualC++版本的不断升级，以及功能、风格等诸多原因，BCB渐现颓势，许多Builder使用者也开始转而使用Visual了。\n" +
                "在2007年CSDN、《程序员》主办的开发者大调查中，详细的分析了C++方面大家主要使用什么IDE的状况，在目前已收到的15000多份有效问卷中，发现主要使用VS系列的占了75%，BorlandC++Builder/CBuilderX只占6%，EclipseCDT占6%，DevC++占2%，其他IDE占3%，不使用IDE占8%。对于.NET开发，VisualC++2005有了一套新的语法；新的优化技术，可使程序的速度最高提高30%；同时新的编译模式，可保证在Microsoft.NETFramework之上生成完全遵从CLI（CommonLanguageInfrastructure）的可验证代码；新的interop模式，可提供本地与托管代码的无缝融合。\n" +
                "相对于前两个版本，新编译器还包括了一个增强版本的缓冲区安全检查选项，\n" +
                "程序员\n" +
                "程序员\n" +
                "而且对C++程序普遍使用的库，也有新的注重安全的版本。VisualC++2005对基于IntelItanium和AMD64的64位平台，提供了对OpenMP标准的支持，并且修正了一些混合DLL加载的问题，对DoubleP/Invoke的性能问题，提供了自动运行时消除。 相比之下，C++Builder2007英文版2008年6月初上市。从CodeGear大中华区技术总监李维的博客，看到CodeGear对C++Builder2007的期待。虽然说对同一件事情，每个人都有自己的视角，已有五年C++方面学习和开发经验的赖勇浩说道：“BCB正江河日下，2007版本的推出也无法力挽狂澜。虽然现在C++Builder已经归于CodeGear，但人们还是习惯性地与Borland联系上。\n" +
                "现在的Microsoft及VC势头强劲，产品也具有很高的质量性，CodeGear在C++和.Net领域至少三五年内会继续望其项背。所以推出CB2007，更多的是基于版本延续。”\n" +
                "高级程序员作为计算机技术与软件专业技术资格（水平）考试中的一科，是国家人事部和信息产业部对中国计算机与软件专业技术人员进行的职业资格和专业技术资格认定。\n" +
                "八、中国程序员健康两成感觉很虚弱亚健康接近七成\n" +
                "程序员\n" +
                "程序员\n" +
                "“干得比驴累，吃得比猪差，起得比鸡早，睡得比狗晚，看上去比谁都好，五年后比谁都老。很多程序员都曾这样感慨和抱怨过自己的生活状态。”亚健康状态是人体处于健康和疾病之间的过渡阶段，在身体上、心理上没有疾病，但主观上却有许多不适的症状表现和心理体验。\n" +
                "位于调查结果第二位的是“很虚弱”——149，比例为19.81%。很虚弱的健康指数低于亚健康，已接近生病和透支状态，他们的健康已经被亮出了黄牌。\n" +
                "每个人的理解不一样，但是“糟透了”这样的词如果用来形容程序员健康的话，相信大多数人都绝对认同“你已经病了”这样的理解。令人不敢相信的是，竟然有8.24%的程序员用这个词来形容自己的健康状态！\n" +
                "九、.NET全面进入2.0时代，AJAX风头正劲\n" +
                "“在Java领域，JDK8.0是当之无愧的主流平台，但JDK1.7仍保有一半以上的占有量。总的来说，Java族群显然不像.NET族群那样追新。从另一个方面看，这也说明Java平台的成熟，和.NET平台的迅速发展。”\n" +
                "调查结果中“非常健康”的票数低得可怜——40，即使算上“没感觉”，二者之和也不过9.04%，几乎跟“糟透了”持平。如果将“非常健康”和“没感觉”一起算为健康的话，处于亚健康状态的程序员是健康状态的7倍，自认为“很虚弱”的程序员数目是处于健康状态的2.2倍！\n" +
                "根据2007年的调查数据分析，在.NET领域，.NETFramework2.0的采用量已全面超越.NETFramework1.1，成为.NET平台的首选框架。2006年调查结果，1.1和2.0的采用量基本持平，而2007年2.0的采用量则高达1.1的三倍之多。.NETFramework1.1已是明日黄花，微软的更新，\n" +
                "程序员\n" +
                "程序员\n" +
                "换代策略可以说是成功的。\n" +
                "B/S已经成为中国软件业普遍接受的软件结构。在表现层，AJAX技术采用量有较大提升，有将近一半的Web应用采用了AJAX技术，仍采用纯HTML+少量脚本的Web应用中，也有四分之三打算转向采用AJAX技术。反观微软和Adobe力推的新一代RIA平台，则响应者尚少。分别只有1/20和1/10的人愿意选用SilverLight和Flash/Flex作为Web表现层技术。\n" +
                "职业要求\n" +
                "一般的程序员都有四年的在专业领域的学习，需要一个在程序领域的学士学位获得者，不论是数学方面的还是工程方面的都是可以的。\n" +
                "大约有20%的人在这一领域的计算机科学和工程学拥有更高的学位。还有很小一部分程序员是自学的，尽管一些专业性的学校或者综合大学可以提供，但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的，但是公司经常把重点放在应聘者的工作经验上，很多刚从大学毕业的大学生虽然有引人注目的学位证书，但是他们找不到工作是因为他们缺乏经验。一个程序员虽然没有正规的学历，但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话，那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会，这样的话在毕业后你就会发现，多实习让你有更多的经验，在找工作的时候就有更多的机会。\n" +
                "对于职业程序员，另外一个重要的方面就是，程序员需要不断提升自己的业务技术，他的技术必须一直保持在一个较高的水平，并且要不断发展，程序员也要寻找贸易的机会，要参加研讨会，在周刊上发表文章和接受职业教育，这些使程序员在自己的领域中分级或者不断并排前进。\n" +
                "必备技能\n" +
                "熟练开发工具\n" +
                "做为一名程序员至少熟练掌握两到三种开发工具的使用，这是程序员的立身之本，其中C/C++和JAVA是重点推荐的开发工具，C/C++以其高效率和高度的灵活性成为开发工具中的利器，很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在，而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。其次，能掌握一种简便的可视化开发工具，如VB，PowerBuilder，Delphi，CBuilder，则更好，这些开发工具减小了开发难度，并能够强化程序员对象模型的概念。另外，需要掌握基本的脚本语言，如shell，perl等，至少能读懂这些脚本代码。\n" +
                "熟知数据库\n" +
                "为什么数据库是如此重要？作为程序员，他们自然有自己的理由：很多应用程序都是以数据库的数据为中心，而数据库的产品也有不少，其中关系型数据库仍是主流形式，所以程序员至少熟练掌握一两种数据库，对关系型数据库的关键元素要非常清楚，要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具，但SQL是基础，是通用的数据库操作方法。如果没有机会接触商业数据库系统，可以使用免费的数据库产品是一个不错的选择，如mySQL，Postgres等。\n" +
                "了解操作系统\n" +
                "当前主流的操作系统是Windows，Linux/Unix，熟练地使用这些操作系统是必须的，但只有这些还远远不够。要想成为一个真正的编程高手，需要深入了解操作系统，了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统，是一个很好的学习平台，Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少，但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。\n" +
                "在互联网如此普及的今天，如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握，就需要迅速补上这一课，网络技术已改变了软件运行的模式，从最早的客户/服务器结构，到今天的WEBServices，再到未来的网格计算，这一切都离不开以TCP/IP协议栈为基础的网络协议支持，深入掌握TCP/IP协议是非常必要的。至少，需要了解ISO七层协议模型，IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。\n" +
                "明白DCOM/CORBA/XML/WEBServices存在的意义\n" +
                "随着技术的发展，软件与网络的无缝结合是必然趋势，软件系统的位置无关性是未来计算模式的重要特征之一，DCOM/CORBA是当前两大主流的分布计算的中间平台，DCOM是微软COM（组件对象模型）的扩展，而CORBA是OMG支持的规范。XML/WebServices重要性不言而喻，XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”，是分布式计算的基石之一。\n" +
                "不要将软件工程与CMM分开\n" +
                "大型软件系统的开发中，工程化的开发控制取代个人英雄主义，成为软件系统成功的保证，一个编程高手并不一定是一个优秀的程序员，一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合，编程只是软件生命周期中的其中一环，优秀的程序员应该掌握软件开发各个阶段的基本技能，如市场分析，可行性分析，需求分析，结构设计，详细设计，软件测试等。\n" +
                "需求理解能力\n" +
                "程序员要能正确理解任务单中描述的需求。在这里要明确一点，程序员不仅仅要注意到软件的功能需求，还应注意软件的性能需求，要能正确评估自己的模块对整个项目中的影响及潜在的威胁，如果有着两到三年项目经验的熟练程序员对这一点没有体会的话，只能说明他或许是认真工作过，但是没有用心工作。\n" +
                "模块化思维能力\n" +
                "作为一个优秀的程序员，他的思想不能局限在当前的工作任务里面，要想想看自己写的模块是否可以脱离当前系统存在，通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用，减少重复的劳动，也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。\n" +
                "素质要求\n" +
                "团队精神和协作能力\n" +
                "团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了，当今的软件开发已经不是编程了，而是工程。独行侠可以写一些程序也能赚钱发财，但是进入研发团队，从事商业化和产品化的开发任务，就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。\n" +
                "文档习惯\n" +
                "文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高，如果缺乏文档，知识就没有继承，公司还是一个来料加工的软件作坊。作为代码程序员，必须将30%的工作时间用于写技术文档。没有文档的程序员势必会被淘汰。\n" +
                "规范化的代码编写习惯\n" +
                "知名软件公司的代码的变量命名、注释格式，甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定，良好的编写习惯，不但有助于代码的移植和纠错，也有助于不同技术人员之间的协作。\n" +
                "测试习惯\n" +
                "测试是软件工程质量保证的重要环节，但是测试不仅仅是测试工程师的工作，而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试，而要是要进行有目的有针对性的异常调用测试，这一点要结合需求理解能力。\n" +
                "学习和总结的能力\n" +
                "程序员是很容易被淘汰的职业，所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧，这样的技术人员无论学了多少语言，代码写起来多熟练，只能说他是一名熟练的代码民工（码农），他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平，对自己的技术层面要有良好的定位，这样才能有目的地提高自己。这样才能逐步提高，从程序员升级为软件设计师、系统分析员。\n" +
                "拥有强烈的好奇心\n" +
                "什么才是一个程序员的终极武器呢，那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了，它是程序员们永攀高峰的源泉和动力所在。\n" +
                "职业困境\n" +
                "老虎、Bill、自己，中国程序员的困境也来自三个方面\n" +
                "困境之一：老虎的威胁。程序员要面对的饿老虎实在不少，比如说老板，好象就是程序员的天敌，什么“不懂技术却指手画脚”、什么“得到与付出不相当”似乎是程序员最常见的牢骚，这个问题不可能得到真正的解决。\n" +
                "困境之二：Bill的竞争。一般说来中国的程序员大都是吃“青春饭”的，大部分程序员的黄金时代是20～35岁。到了35岁左右，一批又一批年轻程序员会给你带来巨大的竞争压力。首先由于软件行业的飞速发展，很多自己以前学的东西逐渐升级换代，而许多程序员由于长期于工作，学习新知识的效率必然下降。其次自己干了几年，薪水要求自然就高了，而年轻程序员工资又低、干活又快，当然会成为老板的首选；第三，35岁基本都已经成家了，要支撑家庭的生活负担，几乎连从头再来的勇气都不会有了。中国的老话说“长江后浪推前浪，前浪死在沙滩上”，这个历史的规律在软件开发行业体现的尤其明显和残酷，很多程序员必然要面对的结果就是降薪乃至失业。\n" +
                "困境之三：自我的实力。都知道人最难战胜的是自己，所以自我也就是程序员需要超越的最大障碍。大多程序员都把系统分析员和项目经理作为自己的职业目标，但这些目标的达成，需要个人素质、市场机遇等多个方面的条件，太多的程序员就是在高不成、低不就的状态中蹉跎了岁月。对于系统分析员，特别需要以下几方面的素质：客户需求分析能力、系统架构与设计能力、模块分解设计能力、项目流程控制能力、项目风险评估能力等，而对于项目经理则更注重项目管理方面的能力如团队组织能力、沟通协调能力、分析问题解决问题的能力以及良好的职业道德等，而这些素质和能力往往只能依靠程序员个人的学习和努力。看到越来越多的程序员开始学习项目管理的课程，真的有点为他们担心，因为现在的项目管理培训只能停留在理论和考证的程度，既没有素质方面的训练，又缺少实际软件开发项目的案例，学习的结果远远不能达到预期的效果。\n" +
                "薪资待遇\n" +
                "从经济学的层面上来看，软件人才也是劳动力商品中的一种，是由价值规律决定的，有需求才会有市场，才会有人愿意为他们支付更高的工资。当前，包括中国在内，全球都在争夺IT人才，当IT人才的社会总需求大于总供给时，不可避免就会出现人才升值的现象。\n" +
                "日常工作\n" +
                "确认通过审查方案的目标，输入数据，分析师，监事，和客户的输出要求的项目要求。\n" +
                "安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力，题材，编程语言和逻辑图。\n" +
                "编码工作流程的信息转换成计算机语言的项目要求。\n" +
                "通过输入编码信息的计算机程序。\n" +
                "确认程序操作进行测试，修改程序序列和/或代码。\n" +
                "准备写操作指令供用户参考。\n" +
                "保持历史记录，通过记录方案的制定和修订。\n" +
                "维护客户的信息和保护保密的业务。\n" +
                "技能/资格：一般的编程技巧，分析信息，解决问题，软件算法设计，软件性能优化，注重细节，软件设计，软件调试，软件开发基础，软件文档，软件测试。程序员其实分为很多种，大家开发的语言可能不尽相同，但是都是有他们的共同点。\n" +
                "词条图册更多图册\n" +
                "解读词条背后的知识查看全部\n" +
                "\n" +
                "罗超频道 优质创作者\n" +
                "加班996、生病ICU，中国程序员加班严重的原因找到了！\n" +
                "加班是职场永恒的话题，996是程序员永远的痛。3个月前，微信电商明星公司有赞在年会上公开宣布要执行996工作制，遭到行业声讨。\n" +
                "\n" +
                "2019-04-11702\n" +
                "\n" +
                "商务范 商务金领装逼手册\n" +
                "程序员真的都不爱炫富吗？\n" +
                "回想好像是这么回事，一般程序员底薪都在万元以上，可平时见到的码农都是浓厚的直男风，过得极为朴实，似乎跟炫富扯不到一起。这些常年挂榜福布斯的大佬，其实也是程序员，他们也有炫啊。高级程序员也“炫富”，而且更夸张。普通程序员都爱晒什么？\n" +
                "\n" +
                "2017-10-23499\n" +
                "\n" +
                "王吉伟 资深科技自媒体人\n" +
                "写在程序员日，为什么程序员都喜欢去阿里?\n" +
                "在连接成为所有企业战略以及用技术改变未来的今天，程序员越发重要。企业们要有对于当前及未来的社会责任，程序员则有未来实现万物互联时代的担当。一个企业是否真正重视技术，从其对程序员渴求度即可见一斑。\n" +
                "\n" +
                "2017-10-25322\n" +
                "\n" +
                "TA说 全栈开发者\n" +
                "1024程序员节，向改变世界的程序员致敬\n" +
                "正值1024程序员节日来临之际，今天心血来潮，想写篇文章来为我们这些猿猿致敬，也算了却一个心愿，让我们这些猿猿们以自己从事的职业为豪为荣。出于这种情结，我是程序员，我要为自己和猿猿们带盐。），绝对不能让程序出乱子，没错，我们是一群细心的猿。\n" +
                "\n" +
                "2016-10-24268\n" +
                "\n" +
                "电脑报 电脑报官方帐号\n" +
                "这日子网络疯传，1024究竟是什么节日？\n" +
                "知道今天是什么特殊日子吗？身边的人包括网友都在互道节日快乐，他们说今天是『1024节』，是不是一头雾水？“1024”不就一个普通数字，怎么就成了节日？实际上，每年10月24日是程序员节，是有来历的！正式确认该节日。\n" +
                "\n" +
                "2017-11-28203\n" +
                "1/2\n" +
                "\n" +
                "程序员的概述图\n" +
                "解读词条背后的知识\n" +
                "\n" +
                "罗超频道 优质创作者\n" +
                "加班996、生病ICU，中国程序员加班严重的原因找到了！\n" +
                "加班是职场永恒的话题，996是程序员永远的痛。3个月前，微信电商明星公司有赞在年会上公开宣布要执行996工作制，遭到行业声讨。\n" +
                "V百科往期回顾\n" +
                "\n" +
                "\n" +
                "词条统计\n" +
                "浏览次数：2184346次\n" +
                "编辑次数：133次历史版本\n" +
                "最近更新：Stae丶三国（2020-06-12）\n" +
                "突出贡献榜\n" +
                "lovenzo创建版本\n" +
                "新手上路\n" +
                "成长任务编辑入门编辑规则本人编辑new\n" +
                "我有疑问\n" +
                "内容质疑在线客服官方贴吧意见反馈\n" +
                "投诉建议\n" +
                "举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封\n" +
                "©2020 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 \n" +
                "京公网安备11000002000001号\n" +
                "\n" +
                "分享\n";
        long startTime = System.currentTimeMillis();
        List<String> list = StringUtil.stringSplit(bigStr, 10000);
        AtomicInteger code = new AtomicInteger(0);
        AtomicInteger times = new AtomicInteger(1000);
        List<Integer> codes = new ArrayList<>();
        list.forEach(str10000 -> {
            CompletableFuture<AjaxJson> completableFuture = CompletableFuture.supplyAsync(() -> {
                //调用接口
                AjaxJson result = new AjaxJson();
                result.setCode(code.addAndGet(200));
                result.put("data", str10000);
                System.out.println(str10000);
                try {
                    Thread.sleep(times.getAndAdd(1000));
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return result;
            });
            try {
                AjaxJson ajaxJson = completableFuture.whenComplete((success, error) -> {
                    codes.add(success.getCode());
                }).exceptionally(error -> AjaxJson.error("")).get();
                codes.add(ajaxJson.getCode());
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        });
//        codes.forEach(System.out::println);
        System.out.println("function2耗时" + TimeUtil.formatDateTime(System.currentTimeMillis() - startTime));
    }

    public static void function1() throws ExecutionException, InterruptedException {
        long startTime = System.currentTimeMillis();
        AtomicInteger code = new AtomicInteger();
        List<Integer> codes = new ArrayList<>();
        FutureTask<AjaxJson> task = null;
        for (int i = 0; i < 4; i++) {
            int finalI = i;
            task = new FutureTask<>(() -> {
                AjaxJson ajaxJson = new AjaxJson();
                ajaxJson.setCode(code.getAndAdd(200));
                Thread.sleep(1000 * finalI);
                codes.add(code.get());
                return ajaxJson;
            });
            new Thread(task).start();
        }
        AjaxJson ajaxJson = task.get();
//        System.out.println(ajaxJson);
//        codes.forEach(System.out::println);
        System.out.println("function1耗时" + TimeUtil.formatDateTime(System.currentTimeMillis() - startTime));
    }
}


